package com.lekang.system.service;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 任务调度服务接口
 * 负责定时生成和管理护理任务
 */
public interface ITaskSchedulerService {
    
    /**
     * 生成入住首月护理任务
     * @param elderlyId 老人ID
     * @param checkInDate 入住日期
     */
    void generateFirstMonthTasks(Long elderlyId, LocalDate checkInDate);
    
    /**
     * 生成护理计划外任务
     * @param orderId 订单ID
     * @param elderlyId 老人ID
     * @param nursingItemId 护理项目ID
     * @param serviceTime 服务时间
     * @param orderNo 订单号
     */
    void generateOutOfPlanTasks(Long orderId, Long elderlyId, Long nursingItemId, 
                               LocalDateTime serviceTime, String orderNo);
    
    /**
     * 手动触发任务生成（用于测试）
     */
    void generateTestTasks();
    
    /**
     * 生成当月/今日护理任务（根据护理计划和执行周期）
     * @return 返回统计信息Map，包含totalTasks(生成任务数)、elderlyCount(服务老人数)
     */
    java.util.Map<String, Object> generateMonthlyTasks();
}
